package fr.jgraph.model.graph;

import fr.jgraph.model.edge.Edge;
import fr.jgraph.model.edge.EdgeFactory;
import fr.jgraph.model.vertex.Vertex;
import fr.jgraph.model.vertex.VertexFactory;

public abstract class GraphDecorator extends AbstractGraph {
	private Graph wrapper;
	
	public GraphDecorator(Graph g) {
		super(g.getEdgeFactory(),g.getVertexFactory());
		wrapper = g;
	}
	
	public Edge[] getAllEdges(Vertex[] vertices) {
		return wrapper.getAllEdges(vertices);
	}

	public Edge getEdge(Vertex[] vertices) {
		return wrapper.getEdge(vertices);
	}

	public Edge addEdge(Vertex[] vertices) {
		return wrapper.addEdge(vertices);
	}

	public boolean addEdge(Vertex[] vertices, Edge e) {
		return wrapper.addEdge(vertices,e);
	}

	public boolean containsEdge(Vertex[] vertices) {
		return wrapper.containsEdge(vertices);
	}

	public boolean containsEdge(Edge edge) {
		return wrapper.containsEdge(edge);
	}

	public Edge[] edgeSet() {
		return wrapper.edgeSet();
	}

	public Edge[] edgesOf(Vertex v) {
		return wrapper.edgesOf(v);
	}

	public Edge[] removeAllEdges(Vertex[] vertices) {
		return wrapper.removeAllEdges(vertices);
	}

	public Edge removeEdge(Vertex[] vertices) {
		return wrapper.removeEdge(vertices);
	}

	public boolean removeEdge(Edge e) {
		return wrapper.removeEdge(e);
	}

	public Vertex addVertex() {
		return wrapper.addVertex();
	}

	public boolean addVertex(Vertex v) {
		return wrapper.addVertex(v);
	}

	public boolean containsVertex(Vertex v) {
		return wrapper.containsVertex(v);
	}

	public Vertex[] vertexSet() {
		return wrapper.vertexSet();
	}

	public boolean removeVertex(Vertex v) {
		return wrapper.removeVertex(v);
	}

	public EdgeFactory getEdgeFactory() {
		return wrapper.getEdgeFactory();
	}

	public VertexFactory getVertexFactory() {
		return wrapper.getVertexFactory();
	}
}
